package com.niguang.work.api.weChatTemplate.service.impl;

import com.alibaba.fastjson.JSON;
import com.niguang.work.api.enums.WechatTemplateEnum;
import com.niguang.work.api.vo.WechatTemplateMsg;
import com.niguang.work.api.weChatTemplate.abstracts.SendWeChat;
import com.niguang.work.api.weChatTemplate.service.ZhengGaiWeChatService;
import com.niguang.work.api.weChatTemplate.vo.ZhengGaiApplyVo;
import com.niguang.work.api.weChatTemplate.vo.ZhengGaiCcVo;
import com.niguang.work.api.weChatTemplate.vo.ZhengGaiPersonVo;
import lombok.extern.slf4j.Slf4j;
import me.chanjar.weixin.mp.bean.template.WxMpTemplateData;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;
import java.util.TreeMap;

@Service
@Slf4j
public class ZhengGaiWeChatServiceImpl extends SendWeChat implements ZhengGaiWeChatService {


    @Value("${wechat.miniMass.appId}")
    private String miniAppId;

    @Value("${wechat.miniMass.secret}")
    private String miniSecret;


    /**
     * E
     * 微信抄送人跳转小程序界面
     */
    private final static String pageCcUrl = "/pages/detail?formFlag=1&contentId=%s&pageType=%s";

    /**
     * 提交人提交通知：审核人
     * /pages/home?pageType=%s
     */
    private final static String pageApplyUrl = "pages/user?pageType=%s";

    /**
     * 审核人（整改人）审核完成完成通知：整改人/复查人
     */
    private final static String pagePersonUrl = "/pages/detail?formFlag=1&contentId=%s&pageType=%s";


    /**
     * 通知抄送人
     *
     * @param zhengGaiCcVo
     * @return
     */
    @Override
    public boolean sendCcWeChat(ZhengGaiCcVo zhengGaiCcVo) {
        WechatTemplateMsg wechatTemplateMsg = new WechatTemplateMsg();
        TreeMap<String, TreeMap<String, String>> params = new TreeMap() {
            {
                put("first", WechatTemplateMsg.item(zhengGaiCcVo.getTitle(), WechatTemplateEnum.ZHENG_GAI_CC_NOTICE.getTemplateColor()));
                put("keyword1", WechatTemplateMsg.item(zhengGaiCcVo.getSiteName(), WechatTemplateEnum.WECHAT_TEMPLATE_DEFAULT.getDefaultColor()));
                put("keyword2", WechatTemplateMsg.item(zhengGaiCcVo.getDangerTitle(), WechatTemplateEnum.WECHAT_TEMPLATE_DEFAULT.getDefaultColor()));
                put("keyword3", WechatTemplateMsg.item(zhengGaiCcVo.getDangerLevelText(), WechatTemplateEnum.WECHAT_TEMPLATE_DEFAULT.getDefaultColor()));
                put("keyword4", WechatTemplateMsg.item(zhengGaiCcVo.getDangerContext(), WechatTemplateEnum.WECHAT_TEMPLATE_DEFAULT.getDefaultColor()));
                put("keyword5", WechatTemplateMsg.item(zhengGaiCcVo.getSplitTime(), WechatTemplateEnum.WECHAT_TEMPLATE_DEFAULT.getDefaultColor()));
                put("remark", WechatTemplateMsg.item("请及时处理！", WechatTemplateEnum.WECHAT_TEMPLATE_REMARK.getDefaultColor()));
            }
        };
        wechatTemplateMsg.setData(params);
        wechatTemplateMsg.setTouser(zhengGaiCcVo.getOpenId());
        wechatTemplateMsg.setTemplate_id(WechatTemplateEnum.ZHENG_GAI_CC_NOTICE.getTemplateId());
        wechatTemplateMsg.setMiniprogram(new WechatTemplateMsg.Miniprogram(miniAppId, String.format(pageCcUrl, zhengGaiCcVo.getContentId(), zhengGaiCcVo.getPageType())));
        log.info("微信抄送人推送：{}", JSON.toJSONString(wechatTemplateMsg));
        return super.sendWeChatInfo(wechatTemplateMsg);
    }


    /**
     * 通知审核人
     *
     * @param zhengGaiApplyVo
     * @return
     */
    @Override
    public boolean sendApply(ZhengGaiApplyVo zhengGaiApplyVo) {
        WechatTemplateMsg wechatTemplateMsg = new WechatTemplateMsg();
        TreeMap<String, TreeMap<String, String>> params = new TreeMap() {
            {
                put("first", WechatTemplateMsg.item(zhengGaiApplyVo.getTitle(), WechatTemplateEnum.ZHENG_GAI_APPLY_NOTICE.getTemplateColor()));
                put("keyword1", WechatTemplateMsg.item(zhengGaiApplyVo.getInfoType(), WechatTemplateEnum.WECHAT_TEMPLATE_DEFAULT.getDefaultColor()));
                put("keyword2", WechatTemplateMsg.item(zhengGaiApplyVo.getSiteName(), WechatTemplateEnum.WECHAT_TEMPLATE_DEFAULT.getDefaultColor()));
                put("keyword3", WechatTemplateMsg.item(zhengGaiApplyVo.getWaitApply(), WechatTemplateEnum.WECHAT_TEMPLATE_DEFAULT.getDefaultColor()));
                put("keyword4", WechatTemplateMsg.item(zhengGaiApplyVo.getSplitTime(), WechatTemplateEnum.WECHAT_TEMPLATE_DEFAULT.getDefaultColor()));
                put("remark", WechatTemplateMsg.item("请及时处理！", WechatTemplateEnum.WECHAT_TEMPLATE_REMARK.getDefaultColor()));
            }
        };
        wechatTemplateMsg.setData(params);
        wechatTemplateMsg.setTouser(zhengGaiApplyVo.getOpenId());
        wechatTemplateMsg.setTemplate_id(WechatTemplateEnum.ZHENG_GAI_APPLY_NOTICE.getTemplateId());
        wechatTemplateMsg.setMiniprogram(new WechatTemplateMsg.Miniprogram(miniAppId, String.format(pageApplyUrl, zhengGaiApplyVo.getPageType())));
        log.info("微信审核人推送：{}", JSON.toJSONString(wechatTemplateMsg));
        return super.sendWeChatInfo(wechatTemplateMsg);
    }


    /**
     * 通知整改人/复查人
     *
     * @param zhengGaiPersonVo
     * @return
     */
    @Override
    public boolean sendPerson(ZhengGaiPersonVo zhengGaiPersonVo) {
        WechatTemplateMsg wechatTemplateMsg = new WechatTemplateMsg();
        TreeMap<String, TreeMap<String, String>> params = new TreeMap() {
            {
                put("first", WechatTemplateMsg.item(zhengGaiPersonVo.getTitle(), WechatTemplateEnum.ZHENG_GAI_APPLY_NOTICE.getTemplateColor()));
                put("keyword1", WechatTemplateMsg.item(zhengGaiPersonVo.getSubmitUserName(), WechatTemplateEnum.WECHAT_TEMPLATE_DEFAULT.getDefaultColor()));
                put("keyword2", WechatTemplateMsg.item(zhengGaiPersonVo.getSiteName(), WechatTemplateEnum.WECHAT_TEMPLATE_DEFAULT.getDefaultColor()));
                put("keyword3", WechatTemplateMsg.item(zhengGaiPersonVo.getDangerContent(), WechatTemplateEnum.WECHAT_TEMPLATE_DEFAULT.getDefaultColor()));
                put("keyword4", WechatTemplateMsg.item(zhengGaiPersonVo.getApplyUserName(), WechatTemplateEnum.WECHAT_TEMPLATE_DEFAULT.getDefaultColor()));
                put("keyword5", WechatTemplateMsg.item(zhengGaiPersonVo.getReformTerm(), WechatTemplateEnum.WECHAT_TEMPLATE_DEFAULT.getDefaultColor()));
                put("remark", WechatTemplateMsg.item("请及时处理！", WechatTemplateEnum.WECHAT_TEMPLATE_REMARK.getDefaultColor()));
            }
        };
        wechatTemplateMsg.setData(params);
        wechatTemplateMsg.setTouser(zhengGaiPersonVo.getOpenId());
        wechatTemplateMsg.setTemplate_id(WechatTemplateEnum.ZHENG_GAI_PERSON_NOTICE.getTemplateId());
        wechatTemplateMsg.setMiniprogram(new WechatTemplateMsg.Miniprogram(miniAppId, String.format(pagePersonUrl, zhengGaiPersonVo.getContentId(),
                zhengGaiPersonVo.getPageType())));
        log.info("微信整改/复查人推送：{}", JSON.toJSONString(wechatTemplateMsg));
        return super.sendWeChatInfo(wechatTemplateMsg);
    }

    @Override
    public boolean sendExpire(ZhengGaiPersonVo zhengGaiPersonVo) {
        WechatTemplateMsg wechatTemplateMsg = new WechatTemplateMsg();
        TreeMap<String, TreeMap<String, String>> params = new TreeMap() {
            {
                put("first", WechatTemplateMsg.item(zhengGaiPersonVo.getTitle(), WechatTemplateEnum.ZHANG_GAI_EXPIRE_NOTICE.getTemplateColor()));
                put("keyword1", WechatTemplateMsg.item(zhengGaiPersonVo.getDangerTitle(), WechatTemplateEnum.WECHAT_TEMPLATE_DEFAULT.getDefaultColor()));
                put("keyword2", WechatTemplateMsg.item(zhengGaiPersonVo.getReformTerm(), WechatTemplateEnum.WECHAT_TEMPLATE_DEFAULT.getDefaultColor()));
                put("remark", WechatTemplateMsg.item("请按时整改/复查项目，谢谢！", WechatTemplateEnum.WECHAT_TEMPLATE_REMARK.getDefaultColor()));
            }
        };
        wechatTemplateMsg.setData(params);
        wechatTemplateMsg.setTouser(zhengGaiPersonVo.getOpenId());
        wechatTemplateMsg.setTemplate_id(WechatTemplateEnum.ZHANG_GAI_EXPIRE_NOTICE.getTemplateId());
        wechatTemplateMsg.setMiniprogram(new WechatTemplateMsg.Miniprogram(miniAppId, String.format(pagePersonUrl, zhengGaiPersonVo.getContentId(),
                zhengGaiPersonVo.getPageType())));
        log.info("微信整改/复查人到期推送：{}", JSON.toJSONString(wechatTemplateMsg));
        return super.sendWeChatInfo(wechatTemplateMsg);

    }


}
